<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
         
    //1. 编写一个函数 ，输入一个数字，返还数字的长度 
//     function getLength(num) {
//         // 实现这里的逻辑
//         // 一 把数字转成字符串  字符串有长度 
//       return String(num).length
//     }
//     var num = 43257;
//    var res =  getLength(num)    //  4 位
//    console.log(res);

// 1.纯函数 ： 给定相同输入会有相同输出的函数；
// 不会收到外界的影响


// function total(num) {
//     var factor = 4;
//     return num*factor;
// }
// console.log( total(2));

// 可以不基于结果运算
function add (a,b) {
    return  a + b;
}

function total(a,b) {
    return a*b;
}
// (2+4)*3 ---》函数调用
// 基于结果实现 ：必须知道 add的结果才能得到total结果；
var res =  total(add(2,4),3);
console.log(res);

// 组合运算过程，合成运算过程  不基于结果

// 组合运算过程 :不需要基于值来进行编程 ，合成了运算过程
// pointFree
function compose(add,total) {
    return function (a,b,c) {
       return  total(add(a,b),c)
    }
}
var newFn = com(add,total);
// 最终调用最后的运算过程时候才需要传值；
console.log(newFn(2,4,3));

// nodejs 、react



    </script>
</body>
</html>